package com.blb.service;

import com.blb.entity.IOrderLaser;
import com.blb.entity.OrderLaser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.blb.entity.StayProduction;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author tb
 * @since 2020-05-25
 */
public interface IOrderLaserService extends IService<OrderLaser> {

    /**
     * 根据订单编号修改激光码状态
     * @param orderNo
     * @return
     */
    boolean updateStatus(String orderNo);

    /**
     * 根据订单号查询列表
     * @param orderNo
     * @return
     */
    List<IOrderLaser> getByOrderNo(String orderNo);

    /**
     * 根据订单号查询总条数
     * @param orderNo
     * @return
     */
    int countByOrderNo(String orderNo);

    /**
     * 手动分配打印机，根据id修改状态为已打印
     * @param id
     * @param printerId
     * @return
     */
    boolean updateStatusById(String id,String printerId);

    /**
     * 待生产列表
     * @return
     */
    List<StayProduction> Ilist(Integer start, Integer length,String companyId);

    /**
     * 根据订单号查待生产订单
     * @return
     */
    List<StayProduction> queryByOrderNo(String orderNo,String companyId);

    /**
     * 根据订单编号修改待生产订单的生产状态
     * @param orderNo
     * @return
     */
    boolean updateStayByOrderIdToState(String orderNo);

    /**
     * 根据id修改订单激光码表的打印机和状态
     * @param id
     * @param lpId
     * @return
     */
    boolean updateByIdToLpIdStatus(String id,String lpId);

    /**
     * 根据订单号查询未打印个数
     * @param orderNo
     * @return
     */
    int productionIsEndByOrderNo(String orderNo);

    /**
     * 生成激光码
     * @param codeList
     * @return
     */
    boolean generate(List<OrderLaser> codeList);

    /**
     * 确定打印并添加日志
     * @param list
     * @return
     */
    boolean confirmPrintingAndLog(List<IOrderLaser> list);

    /**
     * 手动分配，添加日志
     * @param arr
     * @param orderNo
     * @return
     */
    boolean distributionPrinterAndLog(String[] arr,String orderNo,String pid);

    /**
     * 根据订单号修改订单表的状态为"以生产"
     * @param orderNo
     * @return
     */
    boolean updateOrderStatus(String orderNo);
}
